﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PracticasParaEntrega
{
    class CalculaNumComplejos
    {
        //Variables
        public double numeroReal;
        public double numeroImaginario;

        //Constructor
        public CalculaNumComplejos(double numReal, double numImaginario)
        {
            this.numeroReal = numReal;
            this.numeroImaginario = numImaginario;
        }

        //Funcion Suma Complejo sobrecargando el operador mas (+)
        public static CalculaNumComplejos operator +(CalculaNumComplejos var1, CalculaNumComplejos var2)
        {
            return new CalculaNumComplejos(var1.numeroReal + var2.numeroReal, var1.numeroImaginario + var2.numeroImaginario);
        }

        //Funcion Resta Complejo sobrecargando el operador menos (-)
        public static CalculaNumComplejos operator -(CalculaNumComplejos var1, CalculaNumComplejos var2)
        {
            return new CalculaNumComplejos(var1.numeroReal - var2.numeroReal, var1.numeroImaginario - var2.numeroImaginario);
        }

        //Funcion Multiplicacion Complejo sobrecargando el operador multiplicar (*)
        public static CalculaNumComplejos operator *(CalculaNumComplejos var1, CalculaNumComplejos var2)
        {
            return new CalculaNumComplejos((var1.numeroReal * var2.numeroReal) - (var1.numeroImaginario * var2.numeroImaginario),
                                           (var1.numeroReal * var2.numeroImaginario) + (var1.numeroImaginario * var2.numeroReal));

        }

        //Funcion Division Complejo sobrecargando el operador dividir (/)
        public static CalculaNumComplejos operator /(CalculaNumComplejos var1, CalculaNumComplejos var2)
        {
            return new CalculaNumComplejos((((var1.numeroReal * var2.numeroReal) + (var1.numeroImaginario * var2.numeroImaginario)) / ((var2.numeroReal * var2.numeroReal) + (var2.numeroImaginario * var2.numeroImaginario))),
                  ((((var1.numeroImaginario * var2.numeroReal) - (var1.numeroReal * var2.numeroImaginario)) / ((var2.numeroReal * var2.numeroReal) + (var2.numeroImaginario * var2.numeroImaginario)))));
        }

        public override string ToString()
        {
            return (System.String.Format("{0} + {1}i", numeroReal, numeroImaginario));
        }



    }
}
